【レポート】『ストリートファイター6』ワールドツアーモードを実現した仕組みについて学ぶ #CEDEC2023 #classmethod_game
データアナリティクス事業本部 機械学習チームの鈴木です。
CEDEC2023に参加してきました。 聴講したセッション「『ストリートファイター6』ワールドツアーモードにおける2D格闘システムと3Dレベルデザインの関係」についてレポートします。
セッションでは、ワールドツアーモードの開発の際の課題や、それを解決した新規システム、どこでもバトルをするためのマップ作りの実例を紹介頂きました。私はクラスメソッドの中では機械学習やデータ分析の技術を使った開発のご支援をしているので、そのような観点でセッション内で注目した点をピックアップして記載します。
セッション概要
『ストリートファイター6』のワールドツアーモードは、シングルプレイヤーの没入型ストーリーモードです。
プレイヤーが制作したアバターでストリートファイターの世界を自由に探索し、街のファイターたちといつでもストリートファイトをすることが可能です。
本講演では、ワールドツアーモードの重要な要素である「3D状態からシームレスに2D格闘バトルへ切り替えるシステム」の説明、及びそのシステムが3Dマップを制作する上でどのように影響したのかを紹介します。
※ 「『ストリートファイター6』ワールドツアーモードにおける2D格闘システムと3Dレベルデザインの関係」セッションページより引用
『ストリートファイター6』では3Dのマップを探索しつつ、街のファイターたちとシームレスに2D格闘バトルが楽しめるワールドツアーモードが実装されました。
『ストリートファイター6』のワールドツアーモードの開発において、3Dマップから2Dのバトルへ遷移する際の課題とそれをどのように解決したかについてご解説頂きました。また、どこでもそのような遷移を可能にするための、マップ作りの企画の実例もご紹介頂きました。
ポイントと感じた点
ワールドツアー実現のためのルール化
3Dマップ上のどこでもできるだけシームレスに2Dのバトルができるようにするため、必要な条件についてご紹介頂きました。
私は機械学習やデータ分析を使った仕組みの開発を検討する際に、ゲームシステムに起因するお困りごとを伺うことが多いのですが、上記の条件から格闘ゲームならではの要件や難しさを学べ、非常に参考になりました。
以下で特にポイントと感じた内容について見ていきます。
必要な領域の条件
2Dのバトルを始めるために、必要な十分な範囲をマップ上で確保する必要があります。
以下の3つの領域を合わせて、最低スペースとして横7 x 12 m、高さ5mのスペースが必要です。
- ファイター領域
- 高さはファイティンググラウンドの12mから5m(基礎のジャンプの2倍の高さ)とした。
- 奥行きは当時の最大の技を考慮した。
- 画面スクロールによる駆け引きができる幅とした。
- 観戦者のための領域(必須ではない)
- カメラ領域
地面の条件
地面は、ファイターの立ち位置が±15cm以内になるようにという条件もありました。ファイターごとの高さの基準の高さがずれてしまい、当たり判定がおかしくなってしまうという課題につながります。
バトル遷移時のオブジェクトの削除
バトル遷移時には、プレイヤーやカメラワークの邪魔にならないようにオブジェクトを削除する必要がありました。また、バトル終了から3Dマップに戻る際に、オブジェクトが復活することもありますが、キャラクターがハマってしまって動けなくなることがないように考慮がもとめられます。
新規システムとそのチェック
上記の課題を解決するための新規システムの解説を頂きました。
まず、新規システムの1つ目である、2Dに遷移する際にバトルラインに入っていて削除するオブジェクトの判定設定です。
判定によってバトル遷移時に消えてしまうものの、実は消してはまずかったオブジェクトについては、必要部分を残す設定がされました。また、テーブルの上の飲み物だけ残ってしまうという中途半端な消え方をするものについては、例えばテーブル含めて丸ごと消えるという風な設定がされました。
新規システムの2つ目である、バトルできない領域でバトルをするためのテーブル式バトルラインです。この仕組みにより、バトルできない場所においては事前に設定された別のバトルラインに移動することで、どこでもバトルができるようになります。この仕組みでは特に、できあがったバトルラインの確認をする必要があったそうです。
これらの設定やチェックは、人手での作業も多く、ある程度の時間がかかったそうです。
特に新規システムの2つ目に関するワープのような仕様は、実装する上でかなりバグに繋がりやすいものだったそうです。この点は、QAツールを使って例えばボットによる自動テストを実施することで、かなり多くのバグを発見・対処することができたそうです。
感想
3Dゲームや格闘ゲームならではの課題に加えて、3Dと2Dを行き来することによって発生した新たな課題についてもセッションを通して理解することができました。手作業での設定が結構多かったというお話も伺うことができ、そういった点は機械学習やデータ分析でなにかしら効率化ができると良いなと思いました。どのようなアプローチが可能なのかはセッションの内容を踏まえてぜひ考えてみたいと思いました。